
package com.google.api.ads.adwords.jaxws.v201309.o;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;


/**
 * 
 *       Use this service to generate new keyword and placement ideas based on the
 *       parameters specified in the selector. See the {@link TargetingIdeaSelector}
 *       documentation for more details.
 *       
 *       <p>You can also use this service to retrieve statistics for existing keywords
 *       and placements by setting the selector's {@code requestType} to
 *       {@link com.google.ads.api.services.targetingideas.attributes.RequestType#STATS}
 *       and passing in the appropriate search parameters.</p>
 *     
 * 
 * This class was generated by the JAX-WS RI.
 * JAX-WS RI 2.2.4-b01
 * Generated source version: 2.1
 * 
 */
@WebService(name = "TargetingIdeaServiceInterface", targetNamespace = "https://adwords.google.com/api/adwords/o/v201309")
@XmlSeeAlso({
    com.google.api.ads.adwords.jaxws.v201309.cm.ObjectFactory.class,
    com.google.api.ads.adwords.jaxws.v201309.o.ObjectFactory.class
})
public interface TargetingIdeaServiceInterface {


    /**
     * 
     *         Returns a page of ideas that match the query described by the specified
     *         {@link TargetingIdeaSelector}.
     *         
     *         <p>The selector must specify a {@code paging} value, with {@code numberResults} set to 800 or
     *         less.  Large result sets must be composed through multiple calls to this method, advancing the
     *         paging {@code startIndex} value by {@code numberResults} with each call.
     *         
     *         <p>Only a relatively small total number of results will be available through this method.
     *         Much larger result sets may be available using
     *         {@link #getBulkKeywordIdeas(TargetingIdeaSelector)} at the price of reduced flexibility in
     *         selector options.
     *         
     *         @param selector Query describing the types of results to return when
     *         finding matches (similar keyword ideas/placement ideas).
     *         @return A {@link TargetingIdeaPage} of results, that is a subset of the
     *         list of possible ideas meeting the criteria of the
     *         {@link TargetingIdeaSelector}.
     *         @throws ApiException If problems occurred while querying for ideas.
     *       
     * 
     * @param selector
     * @return
     *     returns com.google.api.ads.adwords.jaxws.v201309.o.TargetingIdeaPage
     * @throws ApiException
     */
    @WebMethod
    @WebResult(name = "rval", targetNamespace = "https://adwords.google.com/api/adwords/o/v201309")
    @RequestWrapper(localName = "get", targetNamespace = "https://adwords.google.com/api/adwords/o/v201309", className = "com.google.api.ads.adwords.jaxws.v201309.o.TargetingIdeaServiceInterfaceget")
    @ResponseWrapper(localName = "getResponse", targetNamespace = "https://adwords.google.com/api/adwords/o/v201309", className = "com.google.api.ads.adwords.jaxws.v201309.o.TargetingIdeaServiceInterfacegetResponse")
    public TargetingIdeaPage get(
        @WebParam(name = "selector", targetNamespace = "https://adwords.google.com/api/adwords/o/v201309")
        TargetingIdeaSelector selector)
        throws ApiException
    ;

    /**
     * 
     *         Returns a page of ideas that match the query described by the specified
     *         {@link TargetingIdeaSelector}.  This method is specialized for returning
     *         bulk keyword ideas, and thus the selector must be set for
     *         {@link com.google.ads.api.services.targetingideas.attributes.RequestType#IDEAS} and
     *         {@link com.google.ads.api.services.common.optimization.attributes.IdeaType#KEYWORD}.
     *         A limited, fixed set of attributes will be returned.
     *         
     *         <p>A single-valued
     *         {@link com.google.ads.api.services.targetingideas.search.RelatedToUrlSearchParameter}
     *         must be supplied.  Single-valued
     *         {@link com.google.ads.api.services.targetingideas.search.LanguageSearchParameter} and
     *         {@link com.google.ads.api.services.targetingideas.search.LocationSearchParameter} are
     *         both optional.  Other search parameters compatible with a keyword query may also be
     *         supplied.
     *         
     *         <p>The selector must specify a {@code paging} value, with {@code numberResults} set to 800
     *         or less. If a URL based search is performed it will return up to 100 keywords when the site is
     *         not owned, or up to 800 if it is. Number of keywords returned on a keyword based search is up
     *         to 800. Large result sets must be composed through multiple calls to this method, advancing the
     *         paging {@code startIndex} value by {@code numberResults} with each call.
     *         
     *         <p>This method can make many more results available than {@link #get(TargetingIdeaSelector)},
     *         but allows less control over the query. For fine-tuned queries that do not need large numbers
     *         of results, prefer {@link #get(TargetingIdeaSelector)}.
     *         
     *         @param selector Query describing the bulk keyword ideas to return.
     *         @return A {@link TargetingIdeaPage} of results, that is a subset of the
     *         list of possible ideas meeting the criteria of the
     *         {@link TargetingIdeaSelector}.
     *         @throws ApiException If problems occurred while querying for ideas.
     *       
     * 
     * @param selector
     * @return
     *     returns com.google.api.ads.adwords.jaxws.v201309.o.TargetingIdeaPage
     * @throws ApiException
     */
    @WebMethod
    @WebResult(name = "rval", targetNamespace = "https://adwords.google.com/api/adwords/o/v201309")
    @RequestWrapper(localName = "getBulkKeywordIdeas", targetNamespace = "https://adwords.google.com/api/adwords/o/v201309", className = "com.google.api.ads.adwords.jaxws.v201309.o.TargetingIdeaServiceInterfacegetBulkKeywordIdeas")
    @ResponseWrapper(localName = "getBulkKeywordIdeasResponse", targetNamespace = "https://adwords.google.com/api/adwords/o/v201309", className = "com.google.api.ads.adwords.jaxws.v201309.o.TargetingIdeaServiceInterfacegetBulkKeywordIdeasResponse")
    public TargetingIdeaPage getBulkKeywordIdeas(
        @WebParam(name = "selector", targetNamespace = "https://adwords.google.com/api/adwords/o/v201309")
        TargetingIdeaSelector selector)
        throws ApiException
    ;

}
